
package com.jdf.controller;

import com.jdf.database.AccesoDB;
import com.jdf.model.GSTransModel;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class AdminController extends HttpServlet {

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) 
            throws ServletException, IOException {
        
        String alias = request.getServletPath();
        if (alias.equals("/Login")) {
            login(request, response);
        } else if (alias.equals("/Salir")) {
            salir(request, response);
        } else if (alias.equals("/RegistrarUsuario")) {
            registrar_usuario(request, response);
        } else if (alias.equals("/ListarUsuario")) {
            listar_usuario(request, response);
        } else if (alias.equals("/SelectTipo")) {
            select_tipo(request,response);
        }
    }

    private void login(HttpServletRequest request, HttpServletResponse response) 
            throws ServletException, IOException {
        
        String destino = "index.jsp";
        HttpSession session = request.getSession(true);
        try {
            // Datos
            String usuario = request.getParameter("usuario");
            String clave = request.getParameter("clave");
            // Proceso
            GSTransModel model = new GSTransModel();
            Map rec = model.validarUsuario(usuario, clave);
            session.setAttribute("usuario", rec);
            String hoy = model.fecha_actual();
            session.setAttribute("fechahoy", hoy);

            if (rec.get("id_tipousuario").equals(1)) {
                destino = "menuAdministrador.jsp";
            } else if (rec.get("id_tipousuario").equals(2)) {
                destino = "menuPersonal.jsp";
            } else {
                destino = "menuConductor.jsp";
            }
        } catch (Exception e) {
            request.setAttribute("error", "<font color=red><b>Acceso Denegado...</b></font>");
            destino = "index.jsp";
        }
        RequestDispatcher rd = request.getRequestDispatcher(destino);
        rd.forward(request, response);
    }

    private void salir(HttpServletRequest request, HttpServletResponse response) 
            throws ServletException, IOException {
        HttpSession session = request.getSession(true);
        session.invalidate(); // Elimina los datos de la sesión
        request.setAttribute("mensaje", "Sesión finalizada");
        RequestDispatcher rd = request.getRequestDispatcher("index.jsp");
        rd.forward(request, response);
    }

     private String validarStr(String cadena) {
        return (cadena == null) ? " " : cadena;
    }
     
    private void registrar_usuario(HttpServletRequest request, HttpServletResponse response) 
            throws ServletException, IOException {
        
        try {
            // Datos
            String usu_nombre = request.getParameter("nombre");
            String usu_paterno = request.getParameter("paterno");
            String usu_materno = request.getParameter("materno");
            String usu_mail = request.getParameter("mail");
            int id_tipo_usuario = Integer.parseInt(request.getParameter("tipo"));
            String usu_codigo = request.getParameter("cod");
            String usu_clave = request.getParameter("clave");
            String usu_direccion = request.getParameter("direccion");
            String tel_casa = request.getParameter("casa");
            String tel_celular = request.getParameter("celular");
            String tel_oficina = request.getParameter("oficina");
            // Proceso
            Map reg = new HashMap();
            reg.put("usu_nombre", validarStr(usu_nombre));
            reg.put("usu_paterno", validarStr(usu_paterno));
            reg.put("usu_materno", validarStr(usu_materno));
            reg.put("usu_mail", validarStr(usu_mail));
            reg.put("id_tipo_usuario", id_tipo_usuario);
            reg.put("usu_codigo", validarStr(usu_codigo));
            reg.put("usu_clave", validarStr(usu_clave));
            reg.put("usu_direccion", validarStr(usu_direccion));
            reg.put("tel_casa", validarStr(tel_casa));
            reg.put("tel_celular", validarStr(tel_celular));
            reg.put("tel_oficina", validarStr(tel_oficina));
            GSTransModel model = new GSTransModel();
            model.registrar_usuario(reg);
            // Fin
            request.setAttribute("mensaje", "Usuario agregado correctamente!");
        } catch (Exception e) {
            request.setAttribute("mensaje", e.getMessage());
        }
        
        RequestDispatcher rd = request.getRequestDispatcher("registrarUsuario.jsp");
        rd.forward(request, response);
    }

    private void select_tipo(HttpServletRequest request, HttpServletResponse response) 
            throws ServletException, IOException {
        
        HttpSession session = request.getSession(true);
        try {
            response.setContentType("text/html");
            //int ide = Integer.parseInt(request.getParameter("ide"));
            GSTransModel model = new GSTransModel();
            ArrayList<Map> lista = model.getTipos();
            session.setAttribute("tipos",lista);
            for (Map map : lista) {
                  System.out.println(map.get("tipusu_descripcion").toString());
            }
        } catch (Exception ex) {
            System.out.println("problemas al seleccionar tipo");
        }
        // generamos la vista y lo devolvemos al cliente
        RequestDispatcher rd = request.getRequestDispatcher("registrarUsuario.jsp");
        rd.forward(request, response);
    }

    private void listar_usuario(HttpServletRequest request, HttpServletResponse response) 
            throws ServletException, IOException {
        HttpSession session = request.getSession(true);
        try {
            response.setContentType("text/html");
            GSTransModel model = new GSTransModel();
            ArrayList<Map> lista_usu = model.listando_usuario();
            session.setAttribute("lista_usu", lista_usu);
        } catch (Exception ex) {
            System.out.println("problemas al listar usuarios");
        }
        // generamos la vista y lo devolvemos al cliente
        RequestDispatcher rd = request.getRequestDispatcher("listarUsuarios.jsp");
        rd.forward(request, response);
    }

   
}
